package Vista;

import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import juego.Juego;

public class VistaInfo {	
	
	Juego juego;
	
	int dimension, anchoJuego;
	int anchoCalle = 17;
	
	JPanel info;
	JLabel infoPartida, infoJugador, infoVehiculo;
	JLabel infoLimite, infoMovimientos, infoPuntaje;
	JLabel infoReferencia;
	
	ImageIcon imagen4x4, imagenAuto, imagenMoto, imagenReferencias;	   	
	String nivel, jugador, limite, movimientos, puntaje;	    
	Border borde = BorderFactory.createMatteBorder(0,2,0,0,Color.black);
	
    //Constructor VistaInfo
	public VistaInfo(Juego juego) {		
		this.juego = juego;
		dimension = juego.getMapa().getDimension();	
		while(anchoCalle * dimension < 625) { 
			anchoCalle += 2; 
		}	
		anchoJuego =  anchoCalle * dimension;
		nivel = ((Integer)juego.getNivel()).toString();
		jugador = this.juego.getJugador().getNombre();
		limite = ((Integer)this.juego.getLimite()).toString();
		movimientos = ((Integer)this.juego.getVehiculo().movimientos()).toString();
		puntaje = ((Integer)this.juego.getPuntaje()).toString();
		obtenerImagenes();
		dibujarInfo(juego);
	}
	
	public JPanel dibujarInfo(Juego juego) {
    
        info = new JPanel();
        info.setBorder(borde);
        info.setBackground(Color.white);
        info.setOpaque(true);
        info.setBounds(anchoJuego, 0, 200, anchoJuego + 50);
        
        infoPartida = new JLabel("<html><font color='black' size='4'>NIVEL " + nivel + "</font></html>", JLabel.CENTER);
        infoPartida.setBackground(Color.orange);
        infoPartida.setOpaque(true);
        infoPartida.setBounds(20,20,140,40);
        info.add(infoPartida);
        
        infoJugador = new JLabel("<html><font color='red' size='4'>Jugador : "+ jugador +"</font></html>");
        infoJugador.setOpaque(false);
        infoJugador.setBounds(20,80,180,40);
        info.add(infoJugador);
        
        infoVehiculo = new JLabel(imagenMoto, JLabel.CENTER);
        dibujarInfoVehiculo();
        infoVehiculo.setBounds(30,120,110,40);
        info.add(infoVehiculo);
        
        infoLimite = new JLabel("<html><font color='blue' size='4'>Limite: " + limite + "</font></html>");
        infoLimite.setOpaque(false);
        infoLimite.setBounds(20,170,180,40);
        info.add(infoLimite);
        
        infoMovimientos = new JLabel();
        escribirMovimientos();
        infoMovimientos.setOpaque(false);
        infoMovimientos.setBounds(20,200,180,40);        
        info.add(infoMovimientos);
        
        infoPuntaje = new JLabel();
        escribirPuntaje();
        infoPuntaje.setOpaque(false); 
        infoPuntaje.setBounds(20,250,140,40);               
        info.add(infoPuntaje);
        
        infoReferencia = new JLabel();
        infoReferencia.setOpaque(false);
        infoReferencia.setIcon(imagenReferencias);        
        infoReferencia.setBounds(20,450,171,153);
        info.add(infoReferencia);
        
        info.setLayout(null);
        return info;
	}
		
	//setea imagen del vehiculo
	private void dibujarInfoVehiculo() {		
		String key = juego.getVehiculo().getIdentidad().getClass().getName(); 
		if(key == "vehiculo.Identidad4por4") infoVehiculo.setIcon(imagen4x4);
       	if(key == "vehiculo.IdentidadAuto")  infoVehiculo.setIcon(imagenAuto);
       	if(key == "vehiculo.IdentidadMoto")  infoVehiculo.setIcon(imagenMoto);
	}
	
	//setea los movimientos
	private void escribirMovimientos() {
		movimientos = ((Integer)juego.getVehiculo().movimientos()).toString();
        infoMovimientos.setText("<html><font color='blue' size='4'>Movimientos: " + movimientos + "</font></html>");
	}
	
	//setea el puntaje
	private void escribirPuntaje() {
		puntaje = ((Integer)juego.getPuntaje()).toString();
		infoPuntaje.setText("<html><font color='green' size='4'>Puntaje: " + puntaje + "</font></html>");
	}
	
	//auxiliar para cargar imagen
	private ImageIcon obtenerImagen(String url) {
		ImageIcon imagen = new ImageIcon(this.getClass().getResource("imagenes/" + url));
		return imagen;
	}
	
	private void obtenerImagenes() {
		imagenMoto = obtenerImagen("moto_80x40.png");
		imagen4x4 = obtenerImagen("4x4_80x40.png");
		imagenAuto = obtenerImagen("auto_80x40.png");
		imagenReferencias = obtenerImagen("referencias.png");
	}
}


